import request from '@/utils/request';
import qs from 'qs';
import type { PageResult, ResponseData } from '../typing';
// 响应接口
export interface GetDictDataPageRes {
    code: number;
    data: {
        total: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            tenantId: number;
            // 字典编码 */
            id: number;
            // 字典排序 */
            sort: number;
            // 字典标签 */
            label: string;
            // 字典键值 */
            value: string;
            // 字典类型 */
            dictType: string;
            // 状态（0停用1正常） */
            status: number;
            // 颜色类型 */
            colorType: string;
            // css 样式 */
            cssClass: string;
            // 备注 */
            remark: string;
        }[];
        pages: number;
        current: number;
        size: number;
    };
    msg: string;
}
export interface QueryDictParams {
    dictType: string;
    current?: number;
    size?: number;
}
/**
 * 获得字典数据分页
 * @param {string} dictType 字典类型
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getDictDataPage(params: QueryDictParams): Promise<GetDictDataPageRes> {
    return request.get(`/system/dict-data/page?${qs.stringify(params)}`);
}
export interface DictDataParams {
    label: string;
    value: string;
    status: number;
    sort?: number;
    remark?: string;
    id?: string | number;
}
/**
 * 更新字典数据
 * @param {object} params 管理后台 - 字典数据更新 Request VO
 * @param {number} params.id 字典编码
 * @returns
 */
export function updateDictData(params: DictDataParams): Promise<ResponseData<boolean>> {
    return request.put(`/system/dict-data/update`, params);
}
// 响应接口
export interface GetDictDataRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        tenantId: number;
        // 字典编码 */
        id: number;
        // 字典排序 */
        sort: number;
        // 字典标签 */
        label: string;
        // 字典键值 */
        value: string;
        // 字典类型 */
        dictType: string;
        // 状态（0停用1正常） */
        status: number;
        // 颜色类型 */
        colorType: string;
        // css 样式 */
        cssClass: string;
        // 备注 */
        remark: string;
    };
    msg: string;
}
/**
 * 获得字典数据
 * @param {string} id
 * @returns
 */
export function getDictData(id: number): Promise<GetDictDataRes> {
    return request.get(`/system/dict-data/get/${id}`);
}
/**
 * 删除字典数据
 * @param {string} id
 * @returns
 */
export function deleteDictData(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/system/dict-data/delete/${id}`);
}
/**
 * 创建字典数据
 * @param {object} params 管理后台 - 字典数据创建 Request VO
 * @returns
 */
export function createDictData(params: DictDataParams): Promise<ResponseData<number>> {
    return request.post(`/system/dict-data/create`, params);
}
// 响应接口
export interface GetDictTypePageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            tenantId: number;
            // 字典主键 */
            id: number;
            // 字典名称 */
            name: string;
            // 字典类型 */
            type: string;
            // 状态（0停用1正常） */
            status: number;
            // 备注 */
            remark: string;
            // 删除时间 */
            deletedTime: Record<string, unknown>;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
export interface QueryDictTypeParams {
    name: string;
    type: string;
    status: string;
    remark: string;
    createTime: string;
    deletedTime: string;
    current: string;
    size: string;
}
/**
 * 获得字典类型分页
 * @param {string} name 字典名称
 * @param {string} type 字典类型
 * @param {string} status 状态（0停用1正常）
 * @param {string} remark 备注
 * @param {string} createTime 创建时间
 * @param {string} deletedTime 删除时间
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getDictTypePage(params: Partial<QueryDictTypeParams>): Promise<GetDictTypePageRes> {
    return request.get(`/system/dict-type/page?${qs.stringify(params)}`);
}
// 参数接口
export interface CreateDictTypeParams {
    // 字典名称 */
    name: string;
    // 字典类型 */
    type: string;
    // 状态（0停用1正常） */
    status: number;
}
// 响应接口
export interface CreateDictTypeRes {
    code: number;
    data: number;
    msg: string;
}
/**
 * 创建字典类型
 * @param {object} params 管理后台 - 字典类型创建 Request VO
 * @param {string} params.name 字典名称
 * @param {string} params.type 字典类型
 * @param {number} params.status 状态（0停用1正常）
 * @returns
 */
export function createDictType(params: CreateDictTypeParams): Promise<CreateDictTypeRes> {
    return request.post(`/system/dict-type/create`, params);
}
// 参数接口
export interface UpdateDictTypeParams {
    // 字典名称 */
    name: string;
    // 字典类型 */
    type: string;
    // 状态（0停用1正常） */
    status: number;
    // 字典主键 */
    id: number;
}
// 响应接口
export interface UpdateDictTypeRes {
    code: number;
    data: boolean;
    msg: string;
}
/**
 * 更新字典类型
 * @param {object} params 管理后台 - 字典类型更新 Request VO
 * @param {string} params.name 字典名称
 * @param {string} params.type 字典类型
 * @param {number} params.status 状态（0停用1正常）
 * @param {number} params.id 字典主键
 * @returns
 */
export function updateDictType(params: UpdateDictTypeParams): Promise<UpdateDictTypeRes> {
    return request.put(`/system/dict-type/update`, params);
}
// 响应接口
export interface GetDictTypeRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        tenantId: number;
        // 字典主键 */
        id: number;
        // 字典名称 */
        name: string;
        // 字典类型 */
        type: string;
        // 状态（0停用1正常） */
        status: number;
        // 备注 */
        remark: string;
        // 删除时间 */
        deletedTime: Record<string, unknown>;
    };
    msg: string;
}
/**
 * 获得字典类型
 * @param {string} id
 * @returns
 */
export function getDictType(id: number): Promise<GetDictTypeRes> {
    return request.get(`/system/dict-type/get/${id}`);
}
/**
 * 删除字典类型
 * @param {string} id
 * @returns
 */
export function deleteDictType(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/system/dict-type/delete/${id}`);
}

// 响应接口
export interface DictDataListByDictTypeRes {
    code: number;
    data: {
        label: string;
        value: string;
    }[];
    msg: string;
}

/**
 * dictDataListByDictType
 * @param {string} dictType
 * @returns
 */
export function dictDataListByDictType(params: { dictType: string }): Promise<DictDataListByDictTypeRes> {
    return request.get(`/openapi/dict-data/list/${params.dictType}`);
}
